"""
Gua框架统一异常处理 - 基于Linus设计哲学
"异常应该被正确处理，而不是被静默吞噬"
"""

from .logger import get_default_logger


class GuaException(Exception):
    """Gua框架基础异常"""
    
    def __init__(self, message: str, status_code: int = 500, user_impact: str = "用户将看到错误页面"):
        super().__init__(message)
        self.message = message
        self.status_code = status_code
        self.user_impact = user_impact
        
        # 记录异常创建时的用户中心日志
        logger = get_default_logger()
        logger.error(
            f"Gua框架异常被创建: {message}",
            event="gua_exception_created",
            exception_type=self.__class__.__name__,
            status_code=status_code,
            user_impact=user_impact,
            error_message=message
        )


class GuaStreamError(GuaException):
    """流式处理异常 - 应该中断流"""
    
    def __init__(self, message: str):
        super().__init__(message, 500, "用户的流式连接将被中断，可能看到部分内容")


class GuaConnectionError(GuaException):
    """连接相关异常"""
    
    def __init__(self, message: str):
        super().__init__(message, 503, "用户将看到服务不可用错误")

